//
// Created by dlr123 on 2021/10/19.
//

#include "keyled.h"

Key_HandleTypeDef hsw2;
Key_HandleTypeDef hsw3;
void Key_timely_detect(Key_HandleTypeDef * hkey)
{
    switch (hkey->KeyState) {
        case KEY_CHECK:
            if (HAL_GPIO_ReadPin(hkey->Key_GPIO_Port, hkey->Key_GPIO_Pin) == GPIO_PIN_RESET) {
                hkey->KeyState = KEY_COMFIRM;
            }
            break;
        case KEY_COMFIRM:
            if (HAL_GPIO_ReadPin(hkey->Key_GPIO_Port, hkey->Key_GPIO_Pin) == GPIO_PIN_RESET) {
                hkey->KeyState = KEY_RELEASE;
                hkey->ButtenFlag = BUTTEN_ON;
            } else {
                hkey->KeyState = KEY_CHECK;
            }
            break;
        case KEY_RELEASE:
            if (HAL_GPIO_ReadPin(hkey->Key_GPIO_Port, hkey->Key_GPIO_Pin) == GPIO_PIN_SET) {
                hkey->KeyState = KEY_CHECK;
            }
            break;
        default:
            break;
    }
}

void KeyInit()
{
    hsw2.Instance = SW2;
    hsw2.Key_GPIO_Port = SW2_GPIO_Port;
    hsw2.Key_GPIO_Pin = SW2_Pin;
    hsw2.ButtenFlag = BUTTEN_OFF;
    hsw2.KeyState = KEY_CHECK;

    hsw3.Instance = SW3;
    hsw3.Key_GPIO_Port = SW3_GPIO_Port;
    hsw3.Key_GPIO_Pin = SW3_Pin;
    hsw3.ButtenFlag = BUTTEN_OFF;
    hsw3.KeyState = KEY_CHECK;
}